package model.manager;


import common.RoomState;
import common.RoomTypes;
import model.CheckInInformation.CheckInInformation;
import model.booking.Booking;
import model.room.Room;
import model.user.User;
import view.login.Login;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

//管理员类
public class Manager implements Serializable {
    private String username;        //用户名
    private String password;        //密码
    public static List<Manager> managers = new ArrayList<>();       //存放管理员对象


    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    //构造函数，需提供用户名和密码
    public Manager(String username, String password) {
        this.username = username;
        this.password = password;
    }


    //管理房间
    public void addRooms(){
        //调用Room类中的添加房间方法
    }
    public void deleteRooms(){
        //调用Room类中的添加房间方法
    }
    public void updateRooms(){
        //调用Room类中的添加房间方法
    }

    //管理财务
    public void checkFinances(LocalDate start,LocalDate end){
        //调用财务类中的check方法

    }

    //确认预约信息，提供一个用户，确认该用户已经入住，修改房间状态
    public void confirmReservation(User user){
        //调用Room类中的修改房间状态方法
    }

    //处理用户的入住申请，提供一个用户，在预约历史中找到该用户并修改预约状态和房间状态
    public boolean dealWithTenant(String checkInPerson,String checkInPersonId,LocalDate localDate1,LocalDate localDate2){
        //用户发出入住申请
            for(Booking b : Booking.getBookingList()){
                if(b.getCheckInPerson().equals(checkInPerson) && b.getCheckInPersonId().equals(checkInPersonId) && b.getCheckInTime().equals(localDate1) && b.getCheckOutTime().equals(localDate2)){
                    b.setStatus("已入住");
                    return true ;
                }
            }
        return false;
        //用户未发起申请，什么都不执行
    }

    //处理用户的续住申请，提供一个用户，在预约历史中找到该用户并修改入住时间
    public boolean dealWithExtend(String checkInPerson,String checkInPersonId,LocalDate localDate1,LocalDate localDate2,LocalDate newDate){
            for(Booking b : Booking.getBookingList()){
                if(b.getCheckInPerson().equals(checkInPerson) && b.getCheckInPersonId().equals(checkInPersonId) && b.getCheckInTime().equals(localDate1) && b.getCheckOutTime().equals(localDate2)){
                    b.setCheckOutTime(newDate);
                    return true ;
                }
            }
            return false;
    }
}